import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 图片灰度处理：彩照变为黑白，一般机器学习，色彩会增加干扰，只要黑白就OK

# 最大值法：RGB三原色中最大值作为灰色值
kfx = plt.imread('./kfx.png')
"""
如果是灰度图：返回(M,N)形状的数组，M表示高度，N表示宽度。
如果是RGB图像，返回(M, N, 3) 形状的数组，M表示高度，N表示宽度。
如果是RGBA图像，返回(M, N, 4) 形状的数组，M表示高度，N表示宽度。
"""
print(kfx)
plt.imshow(kfx)
plt.show()
kfx_max = kfx.max(axis=2)
print(kfx_max.shape)
plt.imshow(kfx_max)
plt.show()
# 最小值法：RGB三原色中最小值作为灰色值
kfx_min = kfx.min(axis=2)
plt.imshow(kfx_min)
plt.show()
# 平均值法：RGB三原色中平均值作为灰色值
kfx_mean = kfx.mean(axis=2)
plt.imshow(kfx_mean)
plt.show()
# 加权平均值法：
"""
按照一定的权值，对RGB的值进行加权平均即(w1R+w2G+w3B)/3
w1,w2,w3分别为R,G,B的权值，去不同的值形成不同的灰度图像。
一般w1=0.299,w2=0.587,w3=0.114得到的灰度图像效果最好
"""
kfx_weight = np.dot(kfx, [0.299, 0.587, 0.114]) / 3
# 注：三维矩阵乘一维结果为2维
print(kfx_weight)
print(kfx_weight.shape)
plt.imshow(kfx_weight)
plt.show()
